package org.advanced;

import redis.clients.jedis.Jedis;

/**
 * @author John.zhang
 * @version Id: BasicConnect, v 1.0 2020/12/21 13:55 ZhiYong Exp $
 * 核心命令
 * dbsize
 * incr key 递增/计数器/限流(利用ip+当前时间作为key)  incrby key 1000 一次性预占1000个自增
 * set NX EX +del 对某个值进行唯一设值来实现分布式锁
 * <p>
 * hashMap
 * set food:fruit:apple 1/set food:meat:pork 3   keys food*  keys food:meat*
 * hset/mhset/hget/mhget/hincrby table1 field1 1|-1/hincrbyfloat table1 field1 1.1|-1.1/hexists table field/hdel table field/hlen table
 * <p>
 * list
 * lpush queue1 value1 value2 左进(先进先出)/rpush queue1 value/lpop queue/rpop queue1/lindex queue1 0/rindex queue1 0
 * rpush/lpop 队列 while(true){lpop(queue)}/blpop queue 10 会产生阻塞超时时间10秒/brpop queue 10
 * <p>
 * set
 * sadd key a b c/smembers key/scard key统计元素/srandmember key 随机返回一个结果/spop key返回一个元素并删除/srem key value 移除一个元素/sismember key value 是否是集合里面的元素
 * 例子1 统计某篇微博文章的点赞数：点赞 sadd like:article1001 user3001 取消点赞 srem like:article1001 user3001 是否点赞 sismember like:article1001 user3001 点赞所有用户 sismember like:article1001 点赞数scard like:article1001
 * 例子2 根据评价提取标签：sadd tags:i5001 A 、sadd tags:i5001 B 、sadd tags:i5001 C
 * 例子3 差集：sdiff set1 set2 交集：sinter set1 set2   并集：sunion set1 set2
 * 例子4 商品筛选：sadd brand:apple iphone11、 sadd system:ios iphone11 、sadd screenSize:6.0-6.24 iphone11、sadd screenType:Icd iphone11/sinter brand:apple system:ios screenSize:6.0-6.24 screenType:ICd
 * 例子5 相互关注：sismember bob:follow me 、sismember me:follow bob /共同关注：sinter me:follow bob:follow / 我关注的人也关注他的人 sismember {my_follow(一次判断所有用户)}:follow John/可能认识的人：sdiffstore mayKnow1 me:follow joy:follow (我和别人都关注的放入到一个新的key里面)
 * <p>
 * ZSet(有序)
 * zadd key 10 java 20 C#  30ruby /zrange key 0 -1 withscores/zrevrange key 0 -1 withscores 反转/zrangebyscore/zrem key value1 value2 删除/zcard/zincrby ket 10 C# 增加分值/zcount /zrank key C# 获取下标/zscore 获取元素分值/
 * 例子1 排行榜新闻点击次数加1：zincrby hotNews:20190926 1 n6001   获取当天点击最多的15条：zrevrange hotNews:20190926 15 withscores
 * <p>
 * geo
 * geoadd citys 121.48 31.22 shanghai 113.01 28.19 suzhou/geopos citys shanghai/geodist citys shanghai suzhou km、m、mi 计算距离/georadius citys 112.01 28.19 5 km 距离这个经纬度5千米内的所有元素/georadiusbymenmber citys shanghai 20km 根据城市找出其不超过20千米距离的数据
 * <p>
 * hyperloglogs基于基数的统计
 * pfadd log 1 2 3 4/pfcount log 统计/pfadd log2 a b c /pfmerge log3 log log2 合并到一个新的key
 * <p>
 * 持久化
 * shutdown 服务正常关闭 触发持久化
 * flushall 清空数据，备份rdb文件，可以后续恢复
 * save/bgsave 手动持久化保存数据
 * <p>
 * RDB恢复数据 stop-writes-on-bgsave-error no
 * cp dump.rdb gmstu.rdb
 * <p>
 * AOF持久化机制(性能偏低)
 * appendonly yes
 * appendfsync everysec (每秒保存一次)
 * bgrewriteaof 当AOF文件超过一个阈值的时候，会触发一次压缩，进行重写
 * auto-aof-rewrite-percentage 100  auto-aof-min-size 64mb
 * <p>
 * 查看主节点情况
 * info replication
 */
public class BasicConnect {

    public static void main(String[] args) {
        Jedis jedis = new Jedis("10.181.144.255", 6379);
        String key = "GMSTU";
        jedis.set(key, "HelloWorld");
        String value = jedis.get(key);
        System.out.println(value);
        jedis.close();
    }

}
